package com.haidong;

import com.haidong.dao.BookDao;
import com.haidong.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


/**
 *  关于bean的生存周期,可以设置init函数和destroy函数,然后在XML中给bean添加属性
 *  ApplicationContext里面只能没有close方法,
 *  只有ClassPathXmlApplicationContext里面的close方法才可以调用bean的destroy
 */
public class AppForLifeCycle {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext ctx = new
                ClassPathXmlApplicationContext("applicationContext.xml");

        // 该方法就是注册一个钩子函数,在JVM关闭前执行销毁方法
        // 缺点是无法控制销毁方法的执行时间,在JVM关闭前才执行,而close方法是编码处调用
//        ctx.registerShutdownHook();
//        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
        BookService bookService = (BookService) ctx.getBean("bookService");
        bookService.save();
//        bookDao.save();

        ctx.close();
    }
}
